1. Field of the Invention
This invention relates generally to communication protocols, and more particularly to highly flexible communication protocols for efficiently communicating data between networked computers and storage devices.
2. Description of the Related Art
The art of networking computers has evolved over the years to bring computer users a rich communication and data sharing experience. As is well known, the Internet has given rise to a new level of sophisticated communication technologies that enable users to share information and communicate via electronic mail with users all over the world. Typically, in the computing industry, data may be transferred over several different types of networks such as the Internet, Local Area Networks (LAN), Wide Area Networks (WAN), Storage Area Networks (SAN), etc. Generally, data transferred over these types of networks may involve utilization of data transfer protocols such as, for example, transmission control protocol (TCP) and an internet protocol (IP). Quite often, the protocols representative of the types of transfer protocols used over the Internet is commonly known as TCP/IP.
TCP/IP is a set of protocols developed to allow cooperating computers to share resources across a network. TCP (the “transmission control protocol”) is responsible for breaking up a message into variable length segments, reassembling them at the other end, resending anything that gets lost, and putting things back in the right order. IP (the “internet protocol”) is responsible for routing individual segments. Through use of the TCP, data that is sent over a network is broken up into little pieces for transmission and reassembled once the data reaches its destination. Data may be sent in the form such as, for example, data packets, etc. Each of the TCP data packets has a header that includes information utilized to identify and process the data packets. The format of TCP data packets are well known to one skilled in the art. Depending on the interface used, the TCP may break down data into a variety of data packet sizes such as 128 byte packets. The TCP includes its own information which allows the data to be reattached in the correct order as well as resending any data that happens to get “dropped” (data that is lost due to various reasons such as congestion over the network). IP routes the data packaged by the TCP to a destination such as a device within a network.
TCP/IP protocols may also be used to direct data flow and transfer in data storage systems over a network. For example, small computer system interface (SCSI) may be used over TCP/IP to store data over a network onto a SCSI peripheral device for storage. Therefore, TCP and IP are beginning to be used to facilitate data transfer over a network to and from a storage device. Typically TCP utilizes a form of congestion avoidance and control in an attempt to minimize congestion in bulk data movement. Unfortunately, TCP's attempt to minimize congestion while maintaining an optimal data transfer rate is not very successful.
As originally designed, the TCP protocol was intended to be a very fault tolerant protocol that could withstand catastrophic failures of the communication network. TCP was also designed with long range communication (which is commonly referred to as a Wide Area Network (WAN)) and messaging in mind. As a result, TCP is inherently a protocol that has high overhead for handling the communication of variable length segments. In addition, because TCP does not recover very quickly from dropped packets, TCP will typically keep track of the particular packet that is dropped and will request the sending host to send only the packet that was lost. While the lost packet is being identified by the sending host, the receiving host keeps all of the data that were received after the dropped packet. Therefore, large memory resources are kept utilized while the receiving host is waiting for the dropped packet to be resent. Therefore, in smaller network environments such as, for example, storage data communication systems, less complex protocols that recover more quickly from dropped packets is desired.
Such an alternative protocol is a storage transport protocol (STP) (also known as simple transport protocol) as described in U.S. patent application Ser. No. 09/490,630, entitled “Methods For Implementing An Ethernet Storage Protocol In Computer Networks.” This patent application is hereby incorporated by reference. STP may be configured to eliminate the overhead and inefficiencies associated with other transport protocols, such as TCP. STP can enable more efficient transfers of data over a communication link, such as, for example, a local area network (LAN), a storage area network (SAN), etc. Communication can also occur over a larger network, such as the Internet with the additional implementation of the Internet Protocol (IP). Consequently, STP can either run on its own in a local environment or over IP. In a wide area network, it may also be beneficial to run STP over IP to enable communication over level 3 switches and/or routers. Therefore, the use of the STP system may provide additional data throughput over that of TCP systems. But, because STP utilizes different types of headers than TCP, there may be cases where incompatibility between communicating devices exists, especially if a device utilizing STP attempts to communicate with another device that is only TCP compatible. Therefore, to obtain optimal data transport over large and small networks, full STP hardware and TCP hardware is presently needed.
FIG. 1A shows a data packet processing hardware 10 with hardware TCP processing. The data packet processing hardware 10 includes a MAC processor 12 connected to an IP processor 14. The IP processor 14 is connected to both a TCP/IP circuitry 16 and an STP circuitry 18. Both the TCP circuitry 16 and the STP circuitry 18 are connected to a host memory 20. Regrettably, having full circuitry from multiple data transmission protocols result in larger than desired chips and create redundant data processing capabilities for most needs. Unfortunately, circuitry to processes TCP is not typically compatible with STP due to STP having headers that are not aligned with TCP's headers.
FIG. 1B shows a data packet processing hardware 10′ with software TCP processing. The data packet processing hardware 10′ includes a MAC processor 12 connected to an IP processor 14. The IP processor 14 is connected to both a TCP software processing 22 and an STP circuitry 18. Both the TCP software processing 22 and the STP circuitry 18 are connected to a host memory 20. Again, due to the need for separate TCP and STP packet processing, data processing capabilities for both STP and TCP are needed.
Therefore, the data processing hardware of FIG. 1A gets full TCP performance (if sufficient hardware capabilities are included) and saves Host CPU cycles, but at higher cost because of the redundant hardware data processing capabilities. In contrast, the data processing hardware of FIG. 1B avoids the redundant hardware but at lower performance and/or high utilization of Host CPU resources. To avoid any redundant hardware, the TCP would be done in software on the host processor. Depending on relative link and processor speeds, this could slow TCP performance, and in any event would significantly burden the host CPU.
Therefore, there is a need for a method of enabling usage of TCP for large communication networks and a protocol with a lower overhead for communication of data in a smaller network without requiring two complete protocol processing systems. In such a method, either protocol may be utilized depending on the data transmission environment.